package org.eclipse.gittab.parser.antlr.internal; 

import java.io.InputStream;

import org.antlr.runtime.BitSet;
import org.antlr.runtime.NoViableAltException;
import org.antlr.runtime.RecognitionException;
import org.antlr.runtime.Token;
import org.antlr.runtime.TokenStream;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gittab.services.GitTabDslGrammarAccess;
import org.eclipse.xtext.conversion.ValueConverterException;
import org.eclipse.xtext.parser.IAstFactory;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;

public class InternalGitTabDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_INT", "RULE_ID", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'import '", "'tuning: '", "' frets '", "'tune string '", "' to '", "' midi '", "'chord library: '", "'chord '", "'tab: '", "'name '", "' by '", "' tempo '", "' tact '", "'/'", "' guitar '", "'||:'", "':||'", "' |'", "'='", "'*'", "' '", "'.'", "'#'", "'>'", "'<'", "'!'", "'-'", "' oct'", "'Nylon'", "'Acoustic'", "'Jazz Electric'", "'Clean'", "'Overdrive'", "'Distortion'", "'C'", "'C#'", "'Db'", "'D'", "'D#'", "'Eb'", "'E'", "'F'", "'F#'", "'Gb'", "'G'", "'G#'", "'Ab'", "'A'", "'A#'", "'Bb'", "'B'", "'w'", "'h'", "'q'", "'e'", "'s'"
    };
    public static final int RULE_ID=6;
    public static final int RULE_STRING=4;
    public static final int RULE_ANY_OTHER=10;
    public static final int RULE_INT=5;
    public static final int RULE_WS=9;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;

        public InternalGitTabDslParser(TokenStream input) {
            super(input);
        }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g"; }


     
     	private GitTabDslGrammarAccess grammarAccess;
     	
        public InternalGitTabDslParser(TokenStream input, IAstFactory factory, GitTabDslGrammarAccess grammarAccess) {
            this(input);
            this.factory = factory;
            registerRules(grammarAccess.getGrammar());
            this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected InputStream getTokenFile() {
        	ClassLoader classLoader = getClass().getClassLoader();
        	return classLoader.getResourceAsStream("org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.tokens");
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "TabModel";	
       	} 



    // $ANTLR start entryRuleTabModel
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:73:1: entryRuleTabModel returns [EObject current=null] : iv_ruleTabModel= ruleTabModel EOF ;
    public final EObject entryRuleTabModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTabModel = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:73:50: (iv_ruleTabModel= ruleTabModel EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:74:2: iv_ruleTabModel= ruleTabModel EOF
            {
             currentNode = createCompositeNode(grammarAccess.getTabModelRule(), currentNode); 
            pushFollow(FOLLOW_ruleTabModel_in_entryRuleTabModel73);
            iv_ruleTabModel=ruleTabModel();
            _fsp--;

             current =iv_ruleTabModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTabModel83); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleTabModel


    // $ANTLR start ruleTabModel
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:81:1: ruleTabModel returns [EObject current=null] : ( (lv_imports_0= ruleImport )* (lv_tuning_1= ruleTuning ) (lv_chordLibrary_2= ruleChordLibrary )* (lv_tab_3= ruleTab )? ) ;
    public final EObject ruleTabModel() throws RecognitionException {
        EObject current = null;

        EObject lv_imports_0 = null;

        EObject lv_tuning_1 = null;

        EObject lv_chordLibrary_2 = null;

        EObject lv_tab_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:86:6: ( ( (lv_imports_0= ruleImport )* (lv_tuning_1= ruleTuning ) (lv_chordLibrary_2= ruleChordLibrary )* (lv_tab_3= ruleTab )? ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:87:1: ( (lv_imports_0= ruleImport )* (lv_tuning_1= ruleTuning ) (lv_chordLibrary_2= ruleChordLibrary )* (lv_tab_3= ruleTab )? )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:87:1: ( (lv_imports_0= ruleImport )* (lv_tuning_1= ruleTuning ) (lv_chordLibrary_2= ruleChordLibrary )* (lv_tab_3= ruleTab )? )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:87:2: (lv_imports_0= ruleImport )* (lv_tuning_1= ruleTuning ) (lv_chordLibrary_2= ruleChordLibrary )* (lv_tab_3= ruleTab )?
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:87:2: (lv_imports_0= ruleImport )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:90:6: lv_imports_0= ruleImport
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getTabModelAccess().getImportsImportParserRuleCall_0_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleImport_in_ruleTabModel142);
            	    lv_imports_0=ruleImport();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getTabModelRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "imports", lv_imports_0, "Import", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:108:3: (lv_tuning_1= ruleTuning )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:111:6: lv_tuning_1= ruleTuning
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getTabModelAccess().getTuningTuningParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleTuning_in_ruleTabModel181);
            lv_tuning_1=ruleTuning();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getTabModelRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "tuning", lv_tuning_1, "Tuning", currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:129:2: (lv_chordLibrary_2= ruleChordLibrary )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==17) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:132:6: lv_chordLibrary_2= ruleChordLibrary
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getTabModelAccess().getChordLibraryChordLibraryParserRuleCall_2_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleChordLibrary_in_ruleTabModel219);
            	    lv_chordLibrary_2=ruleChordLibrary();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getTabModelRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "chordLibrary", lv_chordLibrary_2, "ChordLibrary", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:150:3: (lv_tab_3= ruleTab )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==19) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:153:6: lv_tab_3= ruleTab
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getTabModelAccess().getTabTabParserRuleCall_3_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleTab_in_ruleTabModel258);
                    lv_tab_3=ruleTab();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getTabModelRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "tab", lv_tab_3, "Tab", currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleTabModel


    // $ANTLR start entryRuleImport
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:178:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
    public final EObject entryRuleImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImport = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:178:48: (iv_ruleImport= ruleImport EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:179:2: iv_ruleImport= ruleImport EOF
            {
             currentNode = createCompositeNode(grammarAccess.getImportRule(), currentNode); 
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport296);
            iv_ruleImport=ruleImport();
            _fsp--;

             current =iv_ruleImport; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport306); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleImport


    // $ANTLR start ruleImport
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:186:1: ruleImport returns [EObject current=null] : ( 'import ' (lv_importURI_1= RULE_STRING ) ) ;
    public final EObject ruleImport() throws RecognitionException {
        EObject current = null;

        Token lv_importURI_1=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:191:6: ( ( 'import ' (lv_importURI_1= RULE_STRING ) ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:192:1: ( 'import ' (lv_importURI_1= RULE_STRING ) )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:192:1: ( 'import ' (lv_importURI_1= RULE_STRING ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:192:2: 'import ' (lv_importURI_1= RULE_STRING )
            {
            match(input,11,FOLLOW_11_in_ruleImport340); 

                    createLeafNode(grammarAccess.getImportAccess().getImportKeyword_0(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:196:1: (lv_importURI_1= RULE_STRING )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:198:6: lv_importURI_1= RULE_STRING
            {
            lv_importURI_1=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleImport362); 

            		createLeafNode(grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0(), "importURI"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getImportRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "importURI", lv_importURI_1, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleImport


    // $ANTLR start entryRuleTuning
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:223:1: entryRuleTuning returns [EObject current=null] : iv_ruleTuning= ruleTuning EOF ;
    public final EObject entryRuleTuning() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTuning = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:223:48: (iv_ruleTuning= ruleTuning EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:224:2: iv_ruleTuning= ruleTuning EOF
            {
             currentNode = createCompositeNode(grammarAccess.getTuningRule(), currentNode); 
            pushFollow(FOLLOW_ruleTuning_in_entryRuleTuning403);
            iv_ruleTuning=ruleTuning();
            _fsp--;

             current =iv_ruleTuning; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTuning413); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleTuning


    // $ANTLR start ruleTuning
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:231:1: ruleTuning returns [EObject current=null] : ( 'tuning: ' (lv_name_1= RULE_STRING ) ' frets ' (lv_frets_3= RULE_INT ) (lv_strings_4= ruleGuitarStr )* ) ;
    public final EObject ruleTuning() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_frets_3=null;
        EObject lv_strings_4 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:236:6: ( ( 'tuning: ' (lv_name_1= RULE_STRING ) ' frets ' (lv_frets_3= RULE_INT ) (lv_strings_4= ruleGuitarStr )* ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:237:1: ( 'tuning: ' (lv_name_1= RULE_STRING ) ' frets ' (lv_frets_3= RULE_INT ) (lv_strings_4= ruleGuitarStr )* )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:237:1: ( 'tuning: ' (lv_name_1= RULE_STRING ) ' frets ' (lv_frets_3= RULE_INT ) (lv_strings_4= ruleGuitarStr )* )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:237:2: 'tuning: ' (lv_name_1= RULE_STRING ) ' frets ' (lv_frets_3= RULE_INT ) (lv_strings_4= ruleGuitarStr )*
            {
            match(input,12,FOLLOW_12_in_ruleTuning447); 

                    createLeafNode(grammarAccess.getTuningAccess().getTuningKeyword_0(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:241:1: (lv_name_1= RULE_STRING )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:243:6: lv_name_1= RULE_STRING
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTuning469); 

            		createLeafNode(grammarAccess.getTuningAccess().getNameSTRINGTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getTuningRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            match(input,13,FOLLOW_13_in_ruleTuning486); 

                    createLeafNode(grammarAccess.getTuningAccess().getFretsKeyword_2(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:265:1: (lv_frets_3= RULE_INT )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:267:6: lv_frets_3= RULE_INT
            {
            lv_frets_3=(Token)input.LT(1);
            match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleTuning508); 

            		createLeafNode(grammarAccess.getTuningAccess().getFretsINTTerminalRuleCall_3_0(), "frets"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getTuningRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "frets", lv_frets_3, "INT", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:285:2: (lv_strings_4= ruleGuitarStr )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==14) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:288:6: lv_strings_4= ruleGuitarStr
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getTuningAccess().getStringsGuitarStrParserRuleCall_4_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleGuitarStr_in_ruleTuning550);
            	    lv_strings_4=ruleGuitarStr();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getTuningRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "strings", lv_strings_4, "GuitarStr", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleTuning


    // $ANTLR start entryRuleGuitarStr
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:313:1: entryRuleGuitarStr returns [EObject current=null] : iv_ruleGuitarStr= ruleGuitarStr EOF ;
    public final EObject entryRuleGuitarStr() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGuitarStr = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:313:51: (iv_ruleGuitarStr= ruleGuitarStr EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:314:2: iv_ruleGuitarStr= ruleGuitarStr EOF
            {
             currentNode = createCompositeNode(grammarAccess.getGuitarStrRule(), currentNode); 
            pushFollow(FOLLOW_ruleGuitarStr_in_entryRuleGuitarStr588);
            iv_ruleGuitarStr=ruleGuitarStr();
            _fsp--;

             current =iv_ruleGuitarStr; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGuitarStr598); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleGuitarStr


    // $ANTLR start ruleGuitarStr
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:321:1: ruleGuitarStr returns [EObject current=null] : ( 'tune string ' (lv_name_1= RULE_STRING ) ' to ' (lv_note_3= ruleNotes ) ' midi ' (lv_midi_5= RULE_INT ) ) ;
    public final EObject ruleGuitarStr() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_midi_5=null;
        Enumerator lv_note_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:326:6: ( ( 'tune string ' (lv_name_1= RULE_STRING ) ' to ' (lv_note_3= ruleNotes ) ' midi ' (lv_midi_5= RULE_INT ) ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:327:1: ( 'tune string ' (lv_name_1= RULE_STRING ) ' to ' (lv_note_3= ruleNotes ) ' midi ' (lv_midi_5= RULE_INT ) )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:327:1: ( 'tune string ' (lv_name_1= RULE_STRING ) ' to ' (lv_note_3= ruleNotes ) ' midi ' (lv_midi_5= RULE_INT ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:327:2: 'tune string ' (lv_name_1= RULE_STRING ) ' to ' (lv_note_3= ruleNotes ) ' midi ' (lv_midi_5= RULE_INT )
            {
            match(input,14,FOLLOW_14_in_ruleGuitarStr632); 

                    createLeafNode(grammarAccess.getGuitarStrAccess().getTuneStringKeyword_0(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:331:1: (lv_name_1= RULE_STRING )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:333:6: lv_name_1= RULE_STRING
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleGuitarStr654); 

            		createLeafNode(grammarAccess.getGuitarStrAccess().getNameSTRINGTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getGuitarStrRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            match(input,15,FOLLOW_15_in_ruleGuitarStr671); 

                    createLeafNode(grammarAccess.getGuitarStrAccess().getToKeyword_2(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:355:1: (lv_note_3= ruleNotes )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:358:6: lv_note_3= ruleNotes
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getGuitarStrAccess().getNoteNotesEnumRuleCall_3_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNotes_in_ruleGuitarStr705);
            lv_note_3=ruleNotes();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getGuitarStrRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "note", lv_note_3, "Notes", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }

            match(input,16,FOLLOW_16_in_ruleGuitarStr718); 

                    createLeafNode(grammarAccess.getGuitarStrAccess().getMidiKeyword_4(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:380:1: (lv_midi_5= RULE_INT )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:382:6: lv_midi_5= RULE_INT
            {
            lv_midi_5=(Token)input.LT(1);
            match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleGuitarStr740); 

            		createLeafNode(grammarAccess.getGuitarStrAccess().getMidiINTTerminalRuleCall_5_0(), "midi"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getGuitarStrRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "midi", lv_midi_5, "INT", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleGuitarStr


    // $ANTLR start entryRuleChordLibrary
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:407:1: entryRuleChordLibrary returns [EObject current=null] : iv_ruleChordLibrary= ruleChordLibrary EOF ;
    public final EObject entryRuleChordLibrary() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleChordLibrary = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:407:54: (iv_ruleChordLibrary= ruleChordLibrary EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:408:2: iv_ruleChordLibrary= ruleChordLibrary EOF
            {
             currentNode = createCompositeNode(grammarAccess.getChordLibraryRule(), currentNode); 
            pushFollow(FOLLOW_ruleChordLibrary_in_entryRuleChordLibrary781);
            iv_ruleChordLibrary=ruleChordLibrary();
            _fsp--;

             current =iv_ruleChordLibrary; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleChordLibrary791); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleChordLibrary


    // $ANTLR start ruleChordLibrary
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:415:1: ruleChordLibrary returns [EObject current=null] : ( 'chord library: ' (lv_name_1= RULE_STRING ) (lv_chords_2= ruleChordDefinition )* ) ;
    public final EObject ruleChordLibrary() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        EObject lv_chords_2 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:420:6: ( ( 'chord library: ' (lv_name_1= RULE_STRING ) (lv_chords_2= ruleChordDefinition )* ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:421:1: ( 'chord library: ' (lv_name_1= RULE_STRING ) (lv_chords_2= ruleChordDefinition )* )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:421:1: ( 'chord library: ' (lv_name_1= RULE_STRING ) (lv_chords_2= ruleChordDefinition )* )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:421:2: 'chord library: ' (lv_name_1= RULE_STRING ) (lv_chords_2= ruleChordDefinition )*
            {
            match(input,17,FOLLOW_17_in_ruleChordLibrary825); 

                    createLeafNode(grammarAccess.getChordLibraryAccess().getChordLibraryKeyword_0(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:425:1: (lv_name_1= RULE_STRING )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:427:6: lv_name_1= RULE_STRING
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleChordLibrary847); 

            		createLeafNode(grammarAccess.getChordLibraryAccess().getNameSTRINGTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getChordLibraryRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:445:2: (lv_chords_2= ruleChordDefinition )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==18) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:448:6: lv_chords_2= ruleChordDefinition
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getChordLibraryAccess().getChordsChordDefinitionParserRuleCall_2_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleChordDefinition_in_ruleChordLibrary889);
            	    lv_chords_2=ruleChordDefinition();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getChordLibraryRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "chords", lv_chords_2, "ChordDefinition", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleChordLibrary


    // $ANTLR start entryRuleChordDefinition
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:473:1: entryRuleChordDefinition returns [EObject current=null] : iv_ruleChordDefinition= ruleChordDefinition EOF ;
    public final EObject entryRuleChordDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleChordDefinition = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:473:57: (iv_ruleChordDefinition= ruleChordDefinition EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:474:2: iv_ruleChordDefinition= ruleChordDefinition EOF
            {
             currentNode = createCompositeNode(grammarAccess.getChordDefinitionRule(), currentNode); 
            pushFollow(FOLLOW_ruleChordDefinition_in_entryRuleChordDefinition927);
            iv_ruleChordDefinition=ruleChordDefinition();
            _fsp--;

             current =iv_ruleChordDefinition; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleChordDefinition937); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleChordDefinition


    // $ANTLR start ruleChordDefinition
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:481:1: ruleChordDefinition returns [EObject current=null] : ( 'chord ' (lv_name_1= RULE_STRING ) (lv_notes_2= ruleNote )* ) ;
    public final EObject ruleChordDefinition() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        EObject lv_notes_2 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:486:6: ( ( 'chord ' (lv_name_1= RULE_STRING ) (lv_notes_2= ruleNote )* ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:487:1: ( 'chord ' (lv_name_1= RULE_STRING ) (lv_notes_2= ruleNote )* )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:487:1: ( 'chord ' (lv_name_1= RULE_STRING ) (lv_notes_2= ruleNote )* )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:487:2: 'chord ' (lv_name_1= RULE_STRING ) (lv_notes_2= ruleNote )*
            {
            match(input,18,FOLLOW_18_in_ruleChordDefinition971); 

                    createLeafNode(grammarAccess.getChordDefinitionAccess().getChordKeyword_0(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:491:1: (lv_name_1= RULE_STRING )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:493:6: lv_name_1= RULE_STRING
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleChordDefinition993); 

            		createLeafNode(grammarAccess.getChordDefinitionAccess().getNameSTRINGTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getChordDefinitionRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:511:2: (lv_notes_2= ruleNote )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==RULE_INT||(LA6_0>=45 && LA6_0<=61)) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:514:6: lv_notes_2= ruleNote
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getChordDefinitionAccess().getNotesNoteParserRuleCall_2_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleNote_in_ruleChordDefinition1035);
            	    lv_notes_2=ruleNote();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getChordDefinitionRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "notes", lv_notes_2, "Note", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleChordDefinition


    // $ANTLR start entryRuleTab
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:539:1: entryRuleTab returns [EObject current=null] : iv_ruleTab= ruleTab EOF ;
    public final EObject entryRuleTab() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTab = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:539:45: (iv_ruleTab= ruleTab EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:540:2: iv_ruleTab= ruleTab EOF
            {
             currentNode = createCompositeNode(grammarAccess.getTabRule(), currentNode); 
            pushFollow(FOLLOW_ruleTab_in_entryRuleTab1073);
            iv_ruleTab=ruleTab();
            _fsp--;

             current =iv_ruleTab; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTab1083); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleTab


    // $ANTLR start ruleTab
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:547:1: ruleTab returns [EObject current=null] : ( 'tab: ' 'name ' (lv_name_2= RULE_STRING ) ' by ' (lv_author_4= RULE_STRING ) ' tempo ' (lv_tempo_6= RULE_INT ) ' tact ' (lv_num_8= RULE_INT ) '/' (lv_denom_10= RULE_INT ) ' guitar ' (lv_guitar_12= ruleGuitarSound ) '||:' (lv_beat_14= ruleBeat )* ':||' ) ;
    public final EObject ruleTab() throws RecognitionException {
        EObject current = null;

        Token lv_name_2=null;
        Token lv_author_4=null;
        Token lv_tempo_6=null;
        Token lv_num_8=null;
        Token lv_denom_10=null;
        Enumerator lv_guitar_12 = null;

        EObject lv_beat_14 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:552:6: ( ( 'tab: ' 'name ' (lv_name_2= RULE_STRING ) ' by ' (lv_author_4= RULE_STRING ) ' tempo ' (lv_tempo_6= RULE_INT ) ' tact ' (lv_num_8= RULE_INT ) '/' (lv_denom_10= RULE_INT ) ' guitar ' (lv_guitar_12= ruleGuitarSound ) '||:' (lv_beat_14= ruleBeat )* ':||' ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:553:1: ( 'tab: ' 'name ' (lv_name_2= RULE_STRING ) ' by ' (lv_author_4= RULE_STRING ) ' tempo ' (lv_tempo_6= RULE_INT ) ' tact ' (lv_num_8= RULE_INT ) '/' (lv_denom_10= RULE_INT ) ' guitar ' (lv_guitar_12= ruleGuitarSound ) '||:' (lv_beat_14= ruleBeat )* ':||' )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:553:1: ( 'tab: ' 'name ' (lv_name_2= RULE_STRING ) ' by ' (lv_author_4= RULE_STRING ) ' tempo ' (lv_tempo_6= RULE_INT ) ' tact ' (lv_num_8= RULE_INT ) '/' (lv_denom_10= RULE_INT ) ' guitar ' (lv_guitar_12= ruleGuitarSound ) '||:' (lv_beat_14= ruleBeat )* ':||' )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:553:2: 'tab: ' 'name ' (lv_name_2= RULE_STRING ) ' by ' (lv_author_4= RULE_STRING ) ' tempo ' (lv_tempo_6= RULE_INT ) ' tact ' (lv_num_8= RULE_INT ) '/' (lv_denom_10= RULE_INT ) ' guitar ' (lv_guitar_12= ruleGuitarSound ) '||:' (lv_beat_14= ruleBeat )* ':||'
            {
            match(input,19,FOLLOW_19_in_ruleTab1117); 

                    createLeafNode(grammarAccess.getTabAccess().getTabKeyword_0(), null); 
                
            match(input,20,FOLLOW_20_in_ruleTab1126); 

                    createLeafNode(grammarAccess.getTabAccess().getNameKeyword_1(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:561:1: (lv_name_2= RULE_STRING )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:563:6: lv_name_2= RULE_STRING
            {
            lv_name_2=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTab1148); 

            		createLeafNode(grammarAccess.getTabAccess().getNameSTRINGTerminalRuleCall_2_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getTabRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_2, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            match(input,21,FOLLOW_21_in_ruleTab1165); 

                    createLeafNode(grammarAccess.getTabAccess().getByKeyword_3(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:585:1: (lv_author_4= RULE_STRING )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:587:6: lv_author_4= RULE_STRING
            {
            lv_author_4=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTab1187); 

            		createLeafNode(grammarAccess.getTabAccess().getAuthorSTRINGTerminalRuleCall_4_0(), "author"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getTabRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "author", lv_author_4, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            match(input,22,FOLLOW_22_in_ruleTab1204); 

                    createLeafNode(grammarAccess.getTabAccess().getTempoKeyword_5(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:609:1: (lv_tempo_6= RULE_INT )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:611:6: lv_tempo_6= RULE_INT
            {
            lv_tempo_6=(Token)input.LT(1);
            match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleTab1226); 

            		createLeafNode(grammarAccess.getTabAccess().getTempoINTTerminalRuleCall_6_0(), "tempo"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getTabRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "tempo", lv_tempo_6, "INT", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            match(input,23,FOLLOW_23_in_ruleTab1243); 

                    createLeafNode(grammarAccess.getTabAccess().getTactKeyword_7(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:633:1: (lv_num_8= RULE_INT )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:635:6: lv_num_8= RULE_INT
            {
            lv_num_8=(Token)input.LT(1);
            match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleTab1265); 

            		createLeafNode(grammarAccess.getTabAccess().getNumINTTerminalRuleCall_8_0(), "num"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getTabRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "num", lv_num_8, "INT", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            match(input,24,FOLLOW_24_in_ruleTab1282); 

                    createLeafNode(grammarAccess.getTabAccess().getSolidusKeyword_9(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:657:1: (lv_denom_10= RULE_INT )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:659:6: lv_denom_10= RULE_INT
            {
            lv_denom_10=(Token)input.LT(1);
            match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleTab1304); 

            		createLeafNode(grammarAccess.getTabAccess().getDenomINTTerminalRuleCall_10_0(), "denom"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getTabRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "denom", lv_denom_10, "INT", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            match(input,25,FOLLOW_25_in_ruleTab1321); 

                    createLeafNode(grammarAccess.getTabAccess().getGuitarKeyword_11(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:681:1: (lv_guitar_12= ruleGuitarSound )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:684:6: lv_guitar_12= ruleGuitarSound
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getTabAccess().getGuitarGuitarSoundEnumRuleCall_12_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleGuitarSound_in_ruleTab1355);
            lv_guitar_12=ruleGuitarSound();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getTabRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "guitar", lv_guitar_12, "GuitarSound", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }

            match(input,26,FOLLOW_26_in_ruleTab1368); 

                    createLeafNode(grammarAccess.getTabAccess().getVerticalLineVerticalLineColonKeyword_13(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:706:1: (lv_beat_14= ruleBeat )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==28||LA7_0==31) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:709:6: lv_beat_14= ruleBeat
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getTabAccess().getBeatBeatParserRuleCall_14_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleBeat_in_ruleTab1402);
            	    lv_beat_14=ruleBeat();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getTabRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "beat", lv_beat_14, "Beat", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            match(input,27,FOLLOW_27_in_ruleTab1416); 

                    createLeafNode(grammarAccess.getTabAccess().getColonVerticalLineVerticalLineKeyword_15(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleTab


    // $ANTLR start entryRuleBeat
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:738:1: entryRuleBeat returns [EObject current=null] : iv_ruleBeat= ruleBeat EOF ;
    public final EObject entryRuleBeat() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBeat = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:738:46: (iv_ruleBeat= ruleBeat EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:739:2: iv_ruleBeat= ruleBeat EOF
            {
             currentNode = createCompositeNode(grammarAccess.getBeatRule(), currentNode); 
            pushFollow(FOLLOW_ruleBeat_in_entryRuleBeat1449);
            iv_ruleBeat=ruleBeat();
            _fsp--;

             current =iv_ruleBeat; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBeat1459); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleBeat


    // $ANTLR start ruleBeat
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:746:1: ruleBeat returns [EObject current=null] : ( (lv_notes_0= ruleTone )* ' |' ( '=' (lv_guitar_3= ruleGuitarSound ) )? ( '*' (lv_count_5= RULE_INT ) )? ) ;
    public final EObject ruleBeat() throws RecognitionException {
        EObject current = null;

        Token lv_count_5=null;
        EObject lv_notes_0 = null;

        Enumerator lv_guitar_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:751:6: ( ( (lv_notes_0= ruleTone )* ' |' ( '=' (lv_guitar_3= ruleGuitarSound ) )? ( '*' (lv_count_5= RULE_INT ) )? ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:752:1: ( (lv_notes_0= ruleTone )* ' |' ( '=' (lv_guitar_3= ruleGuitarSound ) )? ( '*' (lv_count_5= RULE_INT ) )? )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:752:1: ( (lv_notes_0= ruleTone )* ' |' ( '=' (lv_guitar_3= ruleGuitarSound ) )? ( '*' (lv_count_5= RULE_INT ) )? )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:752:2: (lv_notes_0= ruleTone )* ' |' ( '=' (lv_guitar_3= ruleGuitarSound ) )? ( '*' (lv_count_5= RULE_INT ) )?
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:752:2: (lv_notes_0= ruleTone )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==31) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:755:6: lv_notes_0= ruleTone
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getBeatAccess().getNotesToneParserRuleCall_0_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleTone_in_ruleBeat1518);
            	    lv_notes_0=ruleTone();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getBeatRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "notes", lv_notes_0, "Tone", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

            match(input,28,FOLLOW_28_in_ruleBeat1532); 

                    createLeafNode(grammarAccess.getBeatAccess().getSpaceVerticalLineKeyword_1(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:777:1: ( '=' (lv_guitar_3= ruleGuitarSound ) )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==29) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:777:2: '=' (lv_guitar_3= ruleGuitarSound )
                    {
                    match(input,29,FOLLOW_29_in_ruleBeat1542); 

                            createLeafNode(grammarAccess.getBeatAccess().getEqualsSignKeyword_2_0(), null); 
                        
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:781:1: (lv_guitar_3= ruleGuitarSound )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:784:6: lv_guitar_3= ruleGuitarSound
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getBeatAccess().getGuitarGuitarSoundEnumRuleCall_2_1_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleGuitarSound_in_ruleBeat1576);
                    lv_guitar_3=ruleGuitarSound();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getBeatRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "guitar", lv_guitar_3, "GuitarSound", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }
                    break;

            }

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:802:4: ( '*' (lv_count_5= RULE_INT ) )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==30) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:802:5: '*' (lv_count_5= RULE_INT )
                    {
                    match(input,30,FOLLOW_30_in_ruleBeat1592); 

                            createLeafNode(grammarAccess.getBeatAccess().getAsteriskKeyword_3_0(), null); 
                        
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:806:1: (lv_count_5= RULE_INT )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:808:6: lv_count_5= RULE_INT
                    {
                    lv_count_5=(Token)input.LT(1);
                    match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleBeat1614); 

                    		createLeafNode(grammarAccess.getBeatAccess().getCountINTTerminalRuleCall_3_1_0(), "count"); 
                    	

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getBeatRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "count", lv_count_5, "INT", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }


                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleBeat


    // $ANTLR start entryRuleTone
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:833:1: entryRuleTone returns [EObject current=null] : iv_ruleTone= ruleTone EOF ;
    public final EObject entryRuleTone() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTone = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:833:46: (iv_ruleTone= ruleTone EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:834:2: iv_ruleTone= ruleTone EOF
            {
             currentNode = createCompositeNode(grammarAccess.getToneRule(), currentNode); 
            pushFollow(FOLLOW_ruleTone_in_entryRuleTone1657);
            iv_ruleTone=ruleTone();
            _fsp--;

             current =iv_ruleTone; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTone1667); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleTone


    // $ANTLR start ruleTone
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:841:1: ruleTone returns [EObject current=null] : ( ' ' (lv_sound_1= ruleSound )? '.' (lv_value_3= ruleNoteValues ) (lv_strokes_4= ruleStroke )* ) ;
    public final EObject ruleTone() throws RecognitionException {
        EObject current = null;

        EObject lv_sound_1 = null;

        Enumerator lv_value_3 = null;

        EObject lv_strokes_4 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:846:6: ( ( ' ' (lv_sound_1= ruleSound )? '.' (lv_value_3= ruleNoteValues ) (lv_strokes_4= ruleStroke )* ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:847:1: ( ' ' (lv_sound_1= ruleSound )? '.' (lv_value_3= ruleNoteValues ) (lv_strokes_4= ruleStroke )* )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:847:1: ( ' ' (lv_sound_1= ruleSound )? '.' (lv_value_3= ruleNoteValues ) (lv_strokes_4= ruleStroke )* )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:847:2: ' ' (lv_sound_1= ruleSound )? '.' (lv_value_3= ruleNoteValues ) (lv_strokes_4= ruleStroke )*
            {
            match(input,31,FOLLOW_31_in_ruleTone1701); 

                    createLeafNode(grammarAccess.getToneAccess().getSpaceKeyword_0(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:851:1: (lv_sound_1= ruleSound )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( ((LA11_0>=RULE_STRING && LA11_0<=RULE_INT)||(LA11_0>=45 && LA11_0<=61)) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:854:6: lv_sound_1= ruleSound
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getToneAccess().getSoundSoundParserRuleCall_1_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleSound_in_ruleTone1735);
                    lv_sound_1=ruleSound();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getToneRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "sound", lv_sound_1, "Sound", currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }
                    break;

            }

            match(input,32,FOLLOW_32_in_ruleTone1749); 

                    createLeafNode(grammarAccess.getToneAccess().getFullStopKeyword_2(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:876:1: (lv_value_3= ruleNoteValues )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:879:6: lv_value_3= ruleNoteValues
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getToneAccess().getValueNoteValuesEnumRuleCall_3_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNoteValues_in_ruleTone1783);
            lv_value_3=ruleNoteValues();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getToneRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "value", lv_value_3, "NoteValues", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:897:2: (lv_strokes_4= ruleStroke )*
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( ((LA12_0>=33 && LA12_0<=37)) ) {
                    alt12=1;
                }


                switch (alt12) {
            	case 1 :
            	    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:900:6: lv_strokes_4= ruleStroke
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getToneAccess().getStrokesStrokeParserRuleCall_4_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleStroke_in_ruleTone1821);
            	    lv_strokes_4=ruleStroke();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getToneRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "strokes", lv_strokes_4, "Stroke", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop12;
                }
            } while (true);


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleTone


    // $ANTLR start entryRuleStroke
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:925:1: entryRuleStroke returns [EObject current=null] : iv_ruleStroke= ruleStroke EOF ;
    public final EObject entryRuleStroke() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStroke = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:925:48: (iv_ruleStroke= ruleStroke EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:926:2: iv_ruleStroke= ruleStroke EOF
            {
             currentNode = createCompositeNode(grammarAccess.getStrokeRule(), currentNode); 
            pushFollow(FOLLOW_ruleStroke_in_entryRuleStroke1859);
            iv_ruleStroke=ruleStroke();
            _fsp--;

             current =iv_ruleStroke; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStroke1869); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleStroke


    // $ANTLR start ruleStroke
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:933:1: ruleStroke returns [EObject current=null] : (this_DownStroke_0= ruleDownStroke | this_UpStroke_1= ruleUpStroke | this_Pause_2= rulePause | this_Hold_3= ruleHold ) ;
    public final EObject ruleStroke() throws RecognitionException {
        EObject current = null;

        EObject this_DownStroke_0 = null;

        EObject this_UpStroke_1 = null;

        EObject this_Pause_2 = null;

        EObject this_Hold_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:938:6: ( (this_DownStroke_0= ruleDownStroke | this_UpStroke_1= ruleUpStroke | this_Pause_2= rulePause | this_Hold_3= ruleHold ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:939:1: (this_DownStroke_0= ruleDownStroke | this_UpStroke_1= ruleUpStroke | this_Pause_2= rulePause | this_Hold_3= ruleHold )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:939:1: (this_DownStroke_0= ruleDownStroke | this_UpStroke_1= ruleUpStroke | this_Pause_2= rulePause | this_Hold_3= ruleHold )
            int alt13=4;
            switch ( input.LA(1) ) {
            case 33:
                {
                int LA13_1 = input.LA(2);

                if ( (LA13_1==35) ) {
                    alt13=2;
                }
                else if ( (LA13_1==34) ) {
                    alt13=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("939:1: (this_DownStroke_0= ruleDownStroke | this_UpStroke_1= ruleUpStroke | this_Pause_2= rulePause | this_Hold_3= ruleHold )", 13, 1, input);

                    throw nvae;
                }
                }
                break;
            case 34:
                {
                alt13=1;
                }
                break;
            case 35:
                {
                alt13=2;
                }
                break;
            case 36:
                {
                alt13=3;
                }
                break;
            case 37:
                {
                alt13=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("939:1: (this_DownStroke_0= ruleDownStroke | this_UpStroke_1= ruleUpStroke | this_Pause_2= rulePause | this_Hold_3= ruleHold )", 13, 0, input);

                throw nvae;
            }

            switch (alt13) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:940:5: this_DownStroke_0= ruleDownStroke
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getStrokeAccess().getDownStrokeParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleDownStroke_in_ruleStroke1916);
                    this_DownStroke_0=ruleDownStroke();
                    _fsp--;

                     
                            current = this_DownStroke_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:950:5: this_UpStroke_1= ruleUpStroke
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getStrokeAccess().getUpStrokeParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleUpStroke_in_ruleStroke1943);
                    this_UpStroke_1=ruleUpStroke();
                    _fsp--;

                     
                            current = this_UpStroke_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 3 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:960:5: this_Pause_2= rulePause
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getStrokeAccess().getPauseParserRuleCall_2(), currentNode); 
                        
                    pushFollow(FOLLOW_rulePause_in_ruleStroke1970);
                    this_Pause_2=rulePause();
                    _fsp--;

                     
                            current = this_Pause_2; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 4 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:970:5: this_Hold_3= ruleHold
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getStrokeAccess().getHoldParserRuleCall_3(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleHold_in_ruleStroke1997);
                    this_Hold_3=ruleHold();
                    _fsp--;

                     
                            current = this_Hold_3; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleStroke


    // $ANTLR start entryRuleDownStroke
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:985:1: entryRuleDownStroke returns [EObject current=null] : iv_ruleDownStroke= ruleDownStroke EOF ;
    public final EObject entryRuleDownStroke() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDownStroke = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:985:52: (iv_ruleDownStroke= ruleDownStroke EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:986:2: iv_ruleDownStroke= ruleDownStroke EOF
            {
             currentNode = createCompositeNode(grammarAccess.getDownStrokeRule(), currentNode); 
            pushFollow(FOLLOW_ruleDownStroke_in_entryRuleDownStroke2029);
            iv_ruleDownStroke=ruleDownStroke();
            _fsp--;

             current =iv_ruleDownStroke; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDownStroke2039); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleDownStroke


    // $ANTLR start ruleDownStroke
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:993:1: ruleDownStroke returns [EObject current=null] : ( (lv_death_0= '#' )? (lv_name_1= '>' ) ) ;
    public final EObject ruleDownStroke() throws RecognitionException {
        EObject current = null;

        Token lv_death_0=null;
        Token lv_name_1=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:998:6: ( ( (lv_death_0= '#' )? (lv_name_1= '>' ) ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:999:1: ( (lv_death_0= '#' )? (lv_name_1= '>' ) )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:999:1: ( (lv_death_0= '#' )? (lv_name_1= '>' ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:999:2: (lv_death_0= '#' )? (lv_name_1= '>' )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:999:2: (lv_death_0= '#' )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==33) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1001:6: lv_death_0= '#'
                    {
                    lv_death_0=(Token)input.LT(1);
                    match(input,33,FOLLOW_33_in_ruleDownStroke2085); 

                            createLeafNode(grammarAccess.getDownStrokeAccess().getDeathNumberSignKeyword_0_0(), "death"); 
                        

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getDownStrokeRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "death", true, "#", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }
                    break;

            }

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1020:3: (lv_name_1= '>' )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1022:6: lv_name_1= '>'
            {
            lv_name_1=(Token)input.LT(1);
            match(input,34,FOLLOW_34_in_ruleDownStroke2120); 

                    createLeafNode(grammarAccess.getDownStrokeAccess().getNameGreaterThanSignKeyword_1_0(), "name"); 
                

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getDownStrokeRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", /* lv_name_1 */ input.LT(-1), ">", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleDownStroke


    // $ANTLR start entryRuleUpStroke
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1048:1: entryRuleUpStroke returns [EObject current=null] : iv_ruleUpStroke= ruleUpStroke EOF ;
    public final EObject entryRuleUpStroke() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUpStroke = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1048:50: (iv_ruleUpStroke= ruleUpStroke EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1049:2: iv_ruleUpStroke= ruleUpStroke EOF
            {
             currentNode = createCompositeNode(grammarAccess.getUpStrokeRule(), currentNode); 
            pushFollow(FOLLOW_ruleUpStroke_in_entryRuleUpStroke2166);
            iv_ruleUpStroke=ruleUpStroke();
            _fsp--;

             current =iv_ruleUpStroke; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleUpStroke2176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleUpStroke


    // $ANTLR start ruleUpStroke
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1056:1: ruleUpStroke returns [EObject current=null] : ( (lv_death_0= '#' )? (lv_name_1= '<' ) ) ;
    public final EObject ruleUpStroke() throws RecognitionException {
        EObject current = null;

        Token lv_death_0=null;
        Token lv_name_1=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1061:6: ( ( (lv_death_0= '#' )? (lv_name_1= '<' ) ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1062:1: ( (lv_death_0= '#' )? (lv_name_1= '<' ) )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1062:1: ( (lv_death_0= '#' )? (lv_name_1= '<' ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1062:2: (lv_death_0= '#' )? (lv_name_1= '<' )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1062:2: (lv_death_0= '#' )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==33) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1064:6: lv_death_0= '#'
                    {
                    lv_death_0=(Token)input.LT(1);
                    match(input,33,FOLLOW_33_in_ruleUpStroke2222); 

                            createLeafNode(grammarAccess.getUpStrokeAccess().getDeathNumberSignKeyword_0_0(), "death"); 
                        

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getUpStrokeRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "death", true, "#", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }
                    break;

            }

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1083:3: (lv_name_1= '<' )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1085:6: lv_name_1= '<'
            {
            lv_name_1=(Token)input.LT(1);
            match(input,35,FOLLOW_35_in_ruleUpStroke2257); 

                    createLeafNode(grammarAccess.getUpStrokeAccess().getNameLessThanSignKeyword_1_0(), "name"); 
                

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getUpStrokeRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", /* lv_name_1 */ input.LT(-1), "<", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleUpStroke


    // $ANTLR start entryRulePause
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1111:1: entryRulePause returns [EObject current=null] : iv_rulePause= rulePause EOF ;
    public final EObject entryRulePause() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePause = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1111:47: (iv_rulePause= rulePause EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1112:2: iv_rulePause= rulePause EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPauseRule(), currentNode); 
            pushFollow(FOLLOW_rulePause_in_entryRulePause2303);
            iv_rulePause=rulePause();
            _fsp--;

             current =iv_rulePause; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePause2313); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePause


    // $ANTLR start rulePause
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1119:1: rulePause returns [EObject current=null] : (lv_name_0= '!' ) ;
    public final EObject rulePause() throws RecognitionException {
        EObject current = null;

        Token lv_name_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1124:6: ( (lv_name_0= '!' ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1125:1: (lv_name_0= '!' )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1125:1: (lv_name_0= '!' )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1127:6: lv_name_0= '!'
            {
            lv_name_0=(Token)input.LT(1);
            match(input,36,FOLLOW_36_in_rulePause2358); 

                    createLeafNode(grammarAccess.getPauseAccess().getNameExclamationMarkKeyword_0(), "name"); 
                

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPauseRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", /* lv_name_0 */ input.LT(-1), "!", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePause


    // $ANTLR start entryRuleHold
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1153:1: entryRuleHold returns [EObject current=null] : iv_ruleHold= ruleHold EOF ;
    public final EObject entryRuleHold() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHold = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1153:46: (iv_ruleHold= ruleHold EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1154:2: iv_ruleHold= ruleHold EOF
            {
             currentNode = createCompositeNode(grammarAccess.getHoldRule(), currentNode); 
            pushFollow(FOLLOW_ruleHold_in_entryRuleHold2403);
            iv_ruleHold=ruleHold();
            _fsp--;

             current =iv_ruleHold; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleHold2413); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleHold


    // $ANTLR start ruleHold
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1161:1: ruleHold returns [EObject current=null] : (lv_name_0= '-' ) ;
    public final EObject ruleHold() throws RecognitionException {
        EObject current = null;

        Token lv_name_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1166:6: ( (lv_name_0= '-' ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1167:1: (lv_name_0= '-' )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1167:1: (lv_name_0= '-' )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1169:6: lv_name_0= '-'
            {
            lv_name_0=(Token)input.LT(1);
            match(input,37,FOLLOW_37_in_ruleHold2458); 

                    createLeafNode(grammarAccess.getHoldAccess().getNameHyphenMinusKeyword_0(), "name"); 
                

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getHoldRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", /* lv_name_0 */ input.LT(-1), "-", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleHold


    // $ANTLR start entryRuleSound
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1195:1: entryRuleSound returns [EObject current=null] : iv_ruleSound= ruleSound EOF ;
    public final EObject entryRuleSound() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSound = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1195:47: (iv_ruleSound= ruleSound EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1196:2: iv_ruleSound= ruleSound EOF
            {
             currentNode = createCompositeNode(grammarAccess.getSoundRule(), currentNode); 
            pushFollow(FOLLOW_ruleSound_in_entryRuleSound2503);
            iv_ruleSound=ruleSound();
            _fsp--;

             current =iv_ruleSound; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSound2513); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleSound


    // $ANTLR start ruleSound
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1203:1: ruleSound returns [EObject current=null] : (this_Note_0= ruleNote | this_Chord_1= ruleChord ) ;
    public final EObject ruleSound() throws RecognitionException {
        EObject current = null;

        EObject this_Note_0 = null;

        EObject this_Chord_1 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1208:6: ( (this_Note_0= ruleNote | this_Chord_1= ruleChord ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1209:1: (this_Note_0= ruleNote | this_Chord_1= ruleChord )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1209:1: (this_Note_0= ruleNote | this_Chord_1= ruleChord )
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==RULE_INT||(LA16_0>=45 && LA16_0<=61)) ) {
                alt16=1;
            }
            else if ( (LA16_0==RULE_STRING) ) {
                alt16=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("1209:1: (this_Note_0= ruleNote | this_Chord_1= ruleChord )", 16, 0, input);

                throw nvae;
            }
            switch (alt16) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1210:5: this_Note_0= ruleNote
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getSoundAccess().getNoteParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleNote_in_ruleSound2560);
                    this_Note_0=ruleNote();
                    _fsp--;

                     
                            current = this_Note_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1220:5: this_Chord_1= ruleChord
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getSoundAccess().getChordParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleChord_in_ruleSound2587);
                    this_Chord_1=ruleChord();
                    _fsp--;

                     
                            current = this_Chord_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleSound


    // $ANTLR start entryRuleChord
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1235:1: entryRuleChord returns [EObject current=null] : iv_ruleChord= ruleChord EOF ;
    public final EObject entryRuleChord() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleChord = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1235:47: (iv_ruleChord= ruleChord EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1236:2: iv_ruleChord= ruleChord EOF
            {
             currentNode = createCompositeNode(grammarAccess.getChordRule(), currentNode); 
            pushFollow(FOLLOW_ruleChord_in_entryRuleChord2619);
            iv_ruleChord=ruleChord();
            _fsp--;

             current =iv_ruleChord; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleChord2629); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleChord


    // $ANTLR start ruleChord
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1243:1: ruleChord returns [EObject current=null] : ( RULE_STRING ) ;
    public final EObject ruleChord() throws RecognitionException {
        EObject current = null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1248:6: ( ( RULE_STRING ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1249:1: ( RULE_STRING )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1249:1: ( RULE_STRING )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1252:3: RULE_STRING
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getChordRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleChord2675); 

            		createLeafNode(grammarAccess.getChordAccess().getChordChordDefinitionCrossReference_0(), "chord"); 
            	

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleChord


    // $ANTLR start entryRuleNote
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1272:1: entryRuleNote returns [EObject current=null] : iv_ruleNote= ruleNote EOF ;
    public final EObject entryRuleNote() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNote = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1272:46: (iv_ruleNote= ruleNote EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1273:2: iv_ruleNote= ruleNote EOF
            {
             currentNode = createCompositeNode(grammarAccess.getNoteRule(), currentNode); 
            pushFollow(FOLLOW_ruleNote_in_entryRuleNote2710);
            iv_ruleNote=ruleNote();
            _fsp--;

             current =iv_ruleNote; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNote2720); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleNote


    // $ANTLR start ruleNote
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1280:1: ruleNote returns [EObject current=null] : ( (lv_note_0= ruleNoteWrapper ) '=' ( RULE_STRING ) ) ;
    public final EObject ruleNote() throws RecognitionException {
        EObject current = null;

        EObject lv_note_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1285:6: ( ( (lv_note_0= ruleNoteWrapper ) '=' ( RULE_STRING ) ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1286:1: ( (lv_note_0= ruleNoteWrapper ) '=' ( RULE_STRING ) )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1286:1: ( (lv_note_0= ruleNoteWrapper ) '=' ( RULE_STRING ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1286:2: (lv_note_0= ruleNoteWrapper ) '=' ( RULE_STRING )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1286:2: (lv_note_0= ruleNoteWrapper )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1289:6: lv_note_0= ruleNoteWrapper
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getNoteAccess().getNoteNoteWrapperParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNoteWrapper_in_ruleNote2779);
            lv_note_0=ruleNoteWrapper();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getNoteRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "note", lv_note_0, "NoteWrapper", currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }

            match(input,29,FOLLOW_29_in_ruleNote2792); 

                    createLeafNode(grammarAccess.getNoteAccess().getEqualsSignKeyword_1(), null); 
                
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1311:1: ( RULE_STRING )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1314:3: RULE_STRING
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getNoteRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleNote2814); 

            		createLeafNode(grammarAccess.getNoteAccess().getGitStringGuitarStrCrossReference_2_0(), "gitString"); 
            	

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleNote


    // $ANTLR start entryRuleNoteWrapper
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1334:1: entryRuleNoteWrapper returns [EObject current=null] : iv_ruleNoteWrapper= ruleNoteWrapper EOF ;
    public final EObject entryRuleNoteWrapper() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNoteWrapper = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1334:53: (iv_ruleNoteWrapper= ruleNoteWrapper EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1335:2: iv_ruleNoteWrapper= ruleNoteWrapper EOF
            {
             currentNode = createCompositeNode(grammarAccess.getNoteWrapperRule(), currentNode); 
            pushFollow(FOLLOW_ruleNoteWrapper_in_entryRuleNoteWrapper2850);
            iv_ruleNoteWrapper=ruleNoteWrapper();
            _fsp--;

             current =iv_ruleNoteWrapper; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNoteWrapper2860); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleNoteWrapper


    // $ANTLR start ruleNoteWrapper
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1342:1: ruleNoteWrapper returns [EObject current=null] : (this_Fret_0= ruleFret | this_NoteName_1= ruleNoteName ) ;
    public final EObject ruleNoteWrapper() throws RecognitionException {
        EObject current = null;

        EObject this_Fret_0 = null;

        EObject this_NoteName_1 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1347:6: ( (this_Fret_0= ruleFret | this_NoteName_1= ruleNoteName ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1348:1: (this_Fret_0= ruleFret | this_NoteName_1= ruleNoteName )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1348:1: (this_Fret_0= ruleFret | this_NoteName_1= ruleNoteName )
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==RULE_INT) ) {
                alt17=1;
            }
            else if ( ((LA17_0>=45 && LA17_0<=61)) ) {
                alt17=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("1348:1: (this_Fret_0= ruleFret | this_NoteName_1= ruleNoteName )", 17, 0, input);

                throw nvae;
            }
            switch (alt17) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1349:5: this_Fret_0= ruleFret
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getNoteWrapperAccess().getFretParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleFret_in_ruleNoteWrapper2907);
                    this_Fret_0=ruleFret();
                    _fsp--;

                     
                            current = this_Fret_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1359:5: this_NoteName_1= ruleNoteName
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getNoteWrapperAccess().getNoteNameParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleNoteName_in_ruleNoteWrapper2934);
                    this_NoteName_1=ruleNoteName();
                    _fsp--;

                     
                            current = this_NoteName_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleNoteWrapper


    // $ANTLR start entryRuleFret
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1374:1: entryRuleFret returns [EObject current=null] : iv_ruleFret= ruleFret EOF ;
    public final EObject entryRuleFret() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFret = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1374:46: (iv_ruleFret= ruleFret EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1375:2: iv_ruleFret= ruleFret EOF
            {
             currentNode = createCompositeNode(grammarAccess.getFretRule(), currentNode); 
            pushFollow(FOLLOW_ruleFret_in_entryRuleFret2966);
            iv_ruleFret=ruleFret();
            _fsp--;

             current =iv_ruleFret; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFret2976); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleFret


    // $ANTLR start ruleFret
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1382:1: ruleFret returns [EObject current=null] : (lv_fret_0= RULE_INT ) ;
    public final EObject ruleFret() throws RecognitionException {
        EObject current = null;

        Token lv_fret_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1387:6: ( (lv_fret_0= RULE_INT ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1388:1: (lv_fret_0= RULE_INT )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1388:1: (lv_fret_0= RULE_INT )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1390:6: lv_fret_0= RULE_INT
            {
            lv_fret_0=(Token)input.LT(1);
            match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleFret3022); 

            		createLeafNode(grammarAccess.getFretAccess().getFretINTTerminalRuleCall_0(), "fret"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getFretRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "fret", lv_fret_0, "INT", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleFret


    // $ANTLR start entryRuleNoteName
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1415:1: entryRuleNoteName returns [EObject current=null] : iv_ruleNoteName= ruleNoteName EOF ;
    public final EObject entryRuleNoteName() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNoteName = null;


        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1415:50: (iv_ruleNoteName= ruleNoteName EOF )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1416:2: iv_ruleNoteName= ruleNoteName EOF
            {
             currentNode = createCompositeNode(grammarAccess.getNoteNameRule(), currentNode); 
            pushFollow(FOLLOW_ruleNoteName_in_entryRuleNoteName3062);
            iv_ruleNoteName=ruleNoteName();
            _fsp--;

             current =iv_ruleNoteName; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNoteName3072); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleNoteName


    // $ANTLR start ruleNoteName
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1423:1: ruleNoteName returns [EObject current=null] : ( (lv_note_0= ruleNotes ) (lv_octave_1= ' oct' )? ) ;
    public final EObject ruleNoteName() throws RecognitionException {
        EObject current = null;

        Token lv_octave_1=null;
        Enumerator lv_note_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1428:6: ( ( (lv_note_0= ruleNotes ) (lv_octave_1= ' oct' )? ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1429:1: ( (lv_note_0= ruleNotes ) (lv_octave_1= ' oct' )? )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1429:1: ( (lv_note_0= ruleNotes ) (lv_octave_1= ' oct' )? )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1429:2: (lv_note_0= ruleNotes ) (lv_octave_1= ' oct' )?
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1429:2: (lv_note_0= ruleNotes )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1432:6: lv_note_0= ruleNotes
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getNoteNameAccess().getNoteNotesEnumRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNotes_in_ruleNoteName3131);
            lv_note_0=ruleNotes();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getNoteNameRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "note", lv_note_0, "Notes", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }

            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1450:2: (lv_octave_1= ' oct' )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==38) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1452:6: lv_octave_1= ' oct'
                    {
                    lv_octave_1=(Token)input.LT(1);
                    match(input,38,FOLLOW_38_in_ruleNoteName3156); 

                            createLeafNode(grammarAccess.getNoteNameAccess().getOctaveOctKeyword_1_0(), "octave"); 
                        

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getNoteNameRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "octave", true, " oct", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleNoteName


    // $ANTLR start ruleGuitarSound
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1478:1: ruleGuitarSound returns [Enumerator current=null] : ( ( 'Nylon' ) | ( 'Acoustic' ) | ( 'Jazz Electric' ) | ( 'Clean' ) | ( 'Overdrive' ) | ( 'Distortion' ) ) ;
    public final Enumerator ruleGuitarSound() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1482:6: ( ( ( 'Nylon' ) | ( 'Acoustic' ) | ( 'Jazz Electric' ) | ( 'Clean' ) | ( 'Overdrive' ) | ( 'Distortion' ) ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1483:1: ( ( 'Nylon' ) | ( 'Acoustic' ) | ( 'Jazz Electric' ) | ( 'Clean' ) | ( 'Overdrive' ) | ( 'Distortion' ) )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1483:1: ( ( 'Nylon' ) | ( 'Acoustic' ) | ( 'Jazz Electric' ) | ( 'Clean' ) | ( 'Overdrive' ) | ( 'Distortion' ) )
            int alt19=6;
            switch ( input.LA(1) ) {
            case 39:
                {
                alt19=1;
                }
                break;
            case 40:
                {
                alt19=2;
                }
                break;
            case 41:
                {
                alt19=3;
                }
                break;
            case 42:
                {
                alt19=4;
                }
                break;
            case 43:
                {
                alt19=5;
                }
                break;
            case 44:
                {
                alt19=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("1483:1: ( ( 'Nylon' ) | ( 'Acoustic' ) | ( 'Jazz Electric' ) | ( 'Clean' ) | ( 'Overdrive' ) | ( 'Distortion' ) )", 19, 0, input);

                throw nvae;
            }

            switch (alt19) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1483:2: ( 'Nylon' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1483:2: ( 'Nylon' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1483:4: 'Nylon'
                    {
                    match(input,39,FOLLOW_39_in_ruleGuitarSound3217); 

                            current = grammarAccess.getGuitarSoundAccess().getNYLON_ACOUSTICEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getGuitarSoundAccess().getNYLON_ACOUSTICEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1489:6: ( 'Acoustic' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1489:6: ( 'Acoustic' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1489:8: 'Acoustic'
                    {
                    match(input,40,FOLLOW_40_in_ruleGuitarSound3232); 

                            current = grammarAccess.getGuitarSoundAccess().getSTEEL_ACOUSTICEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getGuitarSoundAccess().getSTEEL_ACOUSTICEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1495:6: ( 'Jazz Electric' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1495:6: ( 'Jazz Electric' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1495:8: 'Jazz Electric'
                    {
                    match(input,41,FOLLOW_41_in_ruleGuitarSound3247); 

                            current = grammarAccess.getGuitarSoundAccess().getJAZZ_ELECTRICEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getGuitarSoundAccess().getJAZZ_ELECTRICEnumLiteralDeclaration_2(), null); 
                        

                    }


                    }
                    break;
                case 4 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1501:6: ( 'Clean' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1501:6: ( 'Clean' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1501:8: 'Clean'
                    {
                    match(input,42,FOLLOW_42_in_ruleGuitarSound3262); 

                            current = grammarAccess.getGuitarSoundAccess().getCLEANEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getGuitarSoundAccess().getCLEANEnumLiteralDeclaration_3(), null); 
                        

                    }


                    }
                    break;
                case 5 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1507:6: ( 'Overdrive' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1507:6: ( 'Overdrive' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1507:8: 'Overdrive'
                    {
                    match(input,43,FOLLOW_43_in_ruleGuitarSound3277); 

                            current = grammarAccess.getGuitarSoundAccess().getOVERDRIVEEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getGuitarSoundAccess().getOVERDRIVEEnumLiteralDeclaration_4(), null); 
                        

                    }


                    }
                    break;
                case 6 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1513:6: ( 'Distortion' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1513:6: ( 'Distortion' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1513:8: 'Distortion'
                    {
                    match(input,44,FOLLOW_44_in_ruleGuitarSound3292); 

                            current = grammarAccess.getGuitarSoundAccess().getDISTORTIONEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getGuitarSoundAccess().getDISTORTIONEnumLiteralDeclaration_5(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleGuitarSound


    // $ANTLR start ruleNotes
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1523:1: ruleNotes returns [Enumerator current=null] : ( ( 'C' ) | ( 'C#' ) | ( 'Db' ) | ( 'D' ) | ( 'D#' ) | ( 'Eb' ) | ( 'E' ) | ( 'F' ) | ( 'F#' ) | ( 'Gb' ) | ( 'G' ) | ( 'G#' ) | ( 'Ab' ) | ( 'A' ) | ( 'A#' ) | ( 'Bb' ) | ( 'B' ) ) ;
    public final Enumerator ruleNotes() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1527:6: ( ( ( 'C' ) | ( 'C#' ) | ( 'Db' ) | ( 'D' ) | ( 'D#' ) | ( 'Eb' ) | ( 'E' ) | ( 'F' ) | ( 'F#' ) | ( 'Gb' ) | ( 'G' ) | ( 'G#' ) | ( 'Ab' ) | ( 'A' ) | ( 'A#' ) | ( 'Bb' ) | ( 'B' ) ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1528:1: ( ( 'C' ) | ( 'C#' ) | ( 'Db' ) | ( 'D' ) | ( 'D#' ) | ( 'Eb' ) | ( 'E' ) | ( 'F' ) | ( 'F#' ) | ( 'Gb' ) | ( 'G' ) | ( 'G#' ) | ( 'Ab' ) | ( 'A' ) | ( 'A#' ) | ( 'Bb' ) | ( 'B' ) )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1528:1: ( ( 'C' ) | ( 'C#' ) | ( 'Db' ) | ( 'D' ) | ( 'D#' ) | ( 'Eb' ) | ( 'E' ) | ( 'F' ) | ( 'F#' ) | ( 'Gb' ) | ( 'G' ) | ( 'G#' ) | ( 'Ab' ) | ( 'A' ) | ( 'A#' ) | ( 'Bb' ) | ( 'B' ) )
            int alt20=17;
            switch ( input.LA(1) ) {
            case 45:
                {
                alt20=1;
                }
                break;
            case 46:
                {
                alt20=2;
                }
                break;
            case 47:
                {
                alt20=3;
                }
                break;
            case 48:
                {
                alt20=4;
                }
                break;
            case 49:
                {
                alt20=5;
                }
                break;
            case 50:
                {
                alt20=6;
                }
                break;
            case 51:
                {
                alt20=7;
                }
                break;
            case 52:
                {
                alt20=8;
                }
                break;
            case 53:
                {
                alt20=9;
                }
                break;
            case 54:
                {
                alt20=10;
                }
                break;
            case 55:
                {
                alt20=11;
                }
                break;
            case 56:
                {
                alt20=12;
                }
                break;
            case 57:
                {
                alt20=13;
                }
                break;
            case 58:
                {
                alt20=14;
                }
                break;
            case 59:
                {
                alt20=15;
                }
                break;
            case 60:
                {
                alt20=16;
                }
                break;
            case 61:
                {
                alt20=17;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("1528:1: ( ( 'C' ) | ( 'C#' ) | ( 'Db' ) | ( 'D' ) | ( 'D#' ) | ( 'Eb' ) | ( 'E' ) | ( 'F' ) | ( 'F#' ) | ( 'Gb' ) | ( 'G' ) | ( 'G#' ) | ( 'Ab' ) | ( 'A' ) | ( 'A#' ) | ( 'Bb' ) | ( 'B' ) )", 20, 0, input);

                throw nvae;
            }

            switch (alt20) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1528:2: ( 'C' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1528:2: ( 'C' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1528:4: 'C'
                    {
                    match(input,45,FOLLOW_45_in_ruleNotes3335); 

                            current = grammarAccess.getNotesAccess().getCEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getCEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1534:6: ( 'C#' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1534:6: ( 'C#' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1534:8: 'C#'
                    {
                    match(input,46,FOLLOW_46_in_ruleNotes3350); 

                            current = grammarAccess.getNotesAccess().getCisEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getCisEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1540:6: ( 'Db' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1540:6: ( 'Db' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1540:8: 'Db'
                    {
                    match(input,47,FOLLOW_47_in_ruleNotes3365); 

                            current = grammarAccess.getNotesAccess().getDesEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getDesEnumLiteralDeclaration_2(), null); 
                        

                    }


                    }
                    break;
                case 4 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1546:6: ( 'D' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1546:6: ( 'D' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1546:8: 'D'
                    {
                    match(input,48,FOLLOW_48_in_ruleNotes3380); 

                            current = grammarAccess.getNotesAccess().getDEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getDEnumLiteralDeclaration_3(), null); 
                        

                    }


                    }
                    break;
                case 5 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1552:6: ( 'D#' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1552:6: ( 'D#' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1552:8: 'D#'
                    {
                    match(input,49,FOLLOW_49_in_ruleNotes3395); 

                            current = grammarAccess.getNotesAccess().getDisEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getDisEnumLiteralDeclaration_4(), null); 
                        

                    }


                    }
                    break;
                case 6 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1558:6: ( 'Eb' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1558:6: ( 'Eb' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1558:8: 'Eb'
                    {
                    match(input,50,FOLLOW_50_in_ruleNotes3410); 

                            current = grammarAccess.getNotesAccess().getEsEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getEsEnumLiteralDeclaration_5(), null); 
                        

                    }


                    }
                    break;
                case 7 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1564:6: ( 'E' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1564:6: ( 'E' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1564:8: 'E'
                    {
                    match(input,51,FOLLOW_51_in_ruleNotes3425); 

                            current = grammarAccess.getNotesAccess().getEEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getEEnumLiteralDeclaration_6(), null); 
                        

                    }


                    }
                    break;
                case 8 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1570:6: ( 'F' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1570:6: ( 'F' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1570:8: 'F'
                    {
                    match(input,52,FOLLOW_52_in_ruleNotes3440); 

                            current = grammarAccess.getNotesAccess().getFEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getFEnumLiteralDeclaration_7(), null); 
                        

                    }


                    }
                    break;
                case 9 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1576:6: ( 'F#' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1576:6: ( 'F#' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1576:8: 'F#'
                    {
                    match(input,53,FOLLOW_53_in_ruleNotes3455); 

                            current = grammarAccess.getNotesAccess().getFisEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getFisEnumLiteralDeclaration_8(), null); 
                        

                    }


                    }
                    break;
                case 10 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1582:6: ( 'Gb' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1582:6: ( 'Gb' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1582:8: 'Gb'
                    {
                    match(input,54,FOLLOW_54_in_ruleNotes3470); 

                            current = grammarAccess.getNotesAccess().getGesEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getGesEnumLiteralDeclaration_9(), null); 
                        

                    }


                    }
                    break;
                case 11 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1588:6: ( 'G' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1588:6: ( 'G' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1588:8: 'G'
                    {
                    match(input,55,FOLLOW_55_in_ruleNotes3485); 

                            current = grammarAccess.getNotesAccess().getGEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getGEnumLiteralDeclaration_10(), null); 
                        

                    }


                    }
                    break;
                case 12 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1594:6: ( 'G#' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1594:6: ( 'G#' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1594:8: 'G#'
                    {
                    match(input,56,FOLLOW_56_in_ruleNotes3500); 

                            current = grammarAccess.getNotesAccess().getGisEnumLiteralDeclaration_11().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getGisEnumLiteralDeclaration_11(), null); 
                        

                    }


                    }
                    break;
                case 13 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1600:6: ( 'Ab' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1600:6: ( 'Ab' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1600:8: 'Ab'
                    {
                    match(input,57,FOLLOW_57_in_ruleNotes3515); 

                            current = grammarAccess.getNotesAccess().getAsEnumLiteralDeclaration_12().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getAsEnumLiteralDeclaration_12(), null); 
                        

                    }


                    }
                    break;
                case 14 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1606:6: ( 'A' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1606:6: ( 'A' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1606:8: 'A'
                    {
                    match(input,58,FOLLOW_58_in_ruleNotes3530); 

                            current = grammarAccess.getNotesAccess().getAEnumLiteralDeclaration_13().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getAEnumLiteralDeclaration_13(), null); 
                        

                    }


                    }
                    break;
                case 15 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1612:6: ( 'A#' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1612:6: ( 'A#' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1612:8: 'A#'
                    {
                    match(input,59,FOLLOW_59_in_ruleNotes3545); 

                            current = grammarAccess.getNotesAccess().getAisEnumLiteralDeclaration_14().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getAisEnumLiteralDeclaration_14(), null); 
                        

                    }


                    }
                    break;
                case 16 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1618:6: ( 'Bb' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1618:6: ( 'Bb' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1618:8: 'Bb'
                    {
                    match(input,60,FOLLOW_60_in_ruleNotes3560); 

                            current = grammarAccess.getNotesAccess().getBbEnumLiteralDeclaration_15().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getBbEnumLiteralDeclaration_15(), null); 
                        

                    }


                    }
                    break;
                case 17 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1624:6: ( 'B' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1624:6: ( 'B' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1624:8: 'B'
                    {
                    match(input,61,FOLLOW_61_in_ruleNotes3575); 

                            current = grammarAccess.getNotesAccess().getBEnumLiteralDeclaration_16().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNotesAccess().getBEnumLiteralDeclaration_16(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleNotes


    // $ANTLR start ruleNoteValues
    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1634:1: ruleNoteValues returns [Enumerator current=null] : ( ( 'w' ) | ( 'h' ) | ( 'q' ) | ( 'e' ) | ( 's' ) ) ;
    public final Enumerator ruleNoteValues() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1638:6: ( ( ( 'w' ) | ( 'h' ) | ( 'q' ) | ( 'e' ) | ( 's' ) ) )
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1639:1: ( ( 'w' ) | ( 'h' ) | ( 'q' ) | ( 'e' ) | ( 's' ) )
            {
            // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1639:1: ( ( 'w' ) | ( 'h' ) | ( 'q' ) | ( 'e' ) | ( 's' ) )
            int alt21=5;
            switch ( input.LA(1) ) {
            case 62:
                {
                alt21=1;
                }
                break;
            case 63:
                {
                alt21=2;
                }
                break;
            case 64:
                {
                alt21=3;
                }
                break;
            case 65:
                {
                alt21=4;
                }
                break;
            case 66:
                {
                alt21=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("1639:1: ( ( 'w' ) | ( 'h' ) | ( 'q' ) | ( 'e' ) | ( 's' ) )", 21, 0, input);

                throw nvae;
            }

            switch (alt21) {
                case 1 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1639:2: ( 'w' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1639:2: ( 'w' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1639:4: 'w'
                    {
                    match(input,62,FOLLOW_62_in_ruleNoteValues3618); 

                            current = grammarAccess.getNoteValuesAccess().getWHOLEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNoteValuesAccess().getWHOLEEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1645:6: ( 'h' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1645:6: ( 'h' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1645:8: 'h'
                    {
                    match(input,63,FOLLOW_63_in_ruleNoteValues3633); 

                            current = grammarAccess.getNoteValuesAccess().getHALFEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNoteValuesAccess().getHALFEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1651:6: ( 'q' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1651:6: ( 'q' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1651:8: 'q'
                    {
                    match(input,64,FOLLOW_64_in_ruleNoteValues3648); 

                            current = grammarAccess.getNoteValuesAccess().getQUARTEREnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNoteValuesAccess().getQUARTEREnumLiteralDeclaration_2(), null); 
                        

                    }


                    }
                    break;
                case 4 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1657:6: ( 'e' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1657:6: ( 'e' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1657:8: 'e'
                    {
                    match(input,65,FOLLOW_65_in_ruleNoteValues3663); 

                            current = grammarAccess.getNoteValuesAccess().getEIGHTHEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNoteValuesAccess().getEIGHTHEnumLiteralDeclaration_3(), null); 
                        

                    }


                    }
                    break;
                case 5 :
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1663:6: ( 's' )
                    {
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1663:6: ( 's' )
                    // ../org.eclipse.gittab.dsl/src-gen/org/eclipse/gittab/parser/antlr/internal/InternalGitTabDsl.g:1663:8: 's'
                    {
                    match(input,66,FOLLOW_66_in_ruleNoteValues3678); 

                            current = grammarAccess.getNoteValuesAccess().getSIXTEENTHEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getNoteValuesAccess().getSIXTEENTHEnumLiteralDeclaration_4(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleNoteValues


 

    public static final BitSet FOLLOW_ruleTabModel_in_entryRuleTabModel73 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTabModel83 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleTabModel142 = new BitSet(new long[]{0x0000000000001800L});
    public static final BitSet FOLLOW_ruleTuning_in_ruleTabModel181 = new BitSet(new long[]{0x00000000000A0002L});
    public static final BitSet FOLLOW_ruleChordLibrary_in_ruleTabModel219 = new BitSet(new long[]{0x00000000000A0002L});
    public static final BitSet FOLLOW_ruleTab_in_ruleTabModel258 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport296 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport306 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleImport340 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleImport362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTuning_in_entryRuleTuning403 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTuning413 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_ruleTuning447 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTuning469 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleTuning486 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleTuning508 = new BitSet(new long[]{0x0000000000004002L});
    public static final BitSet FOLLOW_ruleGuitarStr_in_ruleTuning550 = new BitSet(new long[]{0x0000000000004002L});
    public static final BitSet FOLLOW_ruleGuitarStr_in_entryRuleGuitarStr588 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGuitarStr598 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleGuitarStr632 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleGuitarStr654 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleGuitarStr671 = new BitSet(new long[]{0x3FFFE00000000000L});
    public static final BitSet FOLLOW_ruleNotes_in_ruleGuitarStr705 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleGuitarStr718 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleGuitarStr740 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChordLibrary_in_entryRuleChordLibrary781 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChordLibrary791 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleChordLibrary825 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleChordLibrary847 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_ruleChordDefinition_in_ruleChordLibrary889 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_ruleChordDefinition_in_entryRuleChordDefinition927 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChordDefinition937 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleChordDefinition971 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleChordDefinition993 = new BitSet(new long[]{0x3FFFE00000000022L});
    public static final BitSet FOLLOW_ruleNote_in_ruleChordDefinition1035 = new BitSet(new long[]{0x3FFFE00000000022L});
    public static final BitSet FOLLOW_ruleTab_in_entryRuleTab1073 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTab1083 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleTab1117 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleTab1126 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTab1148 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleTab1165 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTab1187 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleTab1204 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleTab1226 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleTab1243 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleTab1265 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleTab1282 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleTab1304 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleTab1321 = new BitSet(new long[]{0x00001F8000000000L});
    public static final BitSet FOLLOW_ruleGuitarSound_in_ruleTab1355 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleTab1368 = new BitSet(new long[]{0x0000000098000000L});
    public static final BitSet FOLLOW_ruleBeat_in_ruleTab1402 = new BitSet(new long[]{0x0000000098000000L});
    public static final BitSet FOLLOW_27_in_ruleTab1416 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBeat_in_entryRuleBeat1449 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBeat1459 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTone_in_ruleBeat1518 = new BitSet(new long[]{0x0000000090000000L});
    public static final BitSet FOLLOW_28_in_ruleBeat1532 = new BitSet(new long[]{0x0000000060000002L});
    public static final BitSet FOLLOW_29_in_ruleBeat1542 = new BitSet(new long[]{0x00001F8000000000L});
    public static final BitSet FOLLOW_ruleGuitarSound_in_ruleBeat1576 = new BitSet(new long[]{0x0000000040000002L});
    public static final BitSet FOLLOW_30_in_ruleBeat1592 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleBeat1614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTone_in_entryRuleTone1657 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTone1667 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleTone1701 = new BitSet(new long[]{0x3FFFE00100000030L});
    public static final BitSet FOLLOW_ruleSound_in_ruleTone1735 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleTone1749 = new BitSet(new long[]{0xC000000000000000L,0x0000000000000007L});
    public static final BitSet FOLLOW_ruleNoteValues_in_ruleTone1783 = new BitSet(new long[]{0x0000003E00000002L});
    public static final BitSet FOLLOW_ruleStroke_in_ruleTone1821 = new BitSet(new long[]{0x0000003E00000002L});
    public static final BitSet FOLLOW_ruleStroke_in_entryRuleStroke1859 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStroke1869 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDownStroke_in_ruleStroke1916 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUpStroke_in_ruleStroke1943 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePause_in_ruleStroke1970 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHold_in_ruleStroke1997 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDownStroke_in_entryRuleDownStroke2029 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDownStroke2039 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleDownStroke2085 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleDownStroke2120 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUpStroke_in_entryRuleUpStroke2166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUpStroke2176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleUpStroke2222 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleUpStroke2257 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePause_in_entryRulePause2303 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePause2313 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_rulePause2358 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHold_in_entryRuleHold2403 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHold2413 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleHold2458 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSound_in_entryRuleSound2503 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSound2513 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNote_in_ruleSound2560 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChord_in_ruleSound2587 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChord_in_entryRuleChord2619 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChord2629 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleChord2675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNote_in_entryRuleNote2710 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNote2720 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNoteWrapper_in_ruleNote2779 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleNote2792 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleNote2814 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNoteWrapper_in_entryRuleNoteWrapper2850 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNoteWrapper2860 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFret_in_ruleNoteWrapper2907 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNoteName_in_ruleNoteWrapper2934 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFret_in_entryRuleFret2966 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFret2976 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleFret3022 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNoteName_in_entryRuleNoteName3062 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNoteName3072 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNotes_in_ruleNoteName3131 = new BitSet(new long[]{0x0000004000000002L});
    public static final BitSet FOLLOW_38_in_ruleNoteName3156 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleGuitarSound3217 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleGuitarSound3232 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleGuitarSound3247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleGuitarSound3262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleGuitarSound3277 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_ruleGuitarSound3292 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleNotes3335 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleNotes3350 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleNotes3365 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleNotes3380 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleNotes3395 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_ruleNotes3410 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleNotes3425 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleNotes3440 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleNotes3455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_54_in_ruleNotes3470 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_55_in_ruleNotes3485 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_56_in_ruleNotes3500 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_57_in_ruleNotes3515 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_ruleNotes3530 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_ruleNotes3545 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_ruleNotes3560 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_61_in_ruleNotes3575 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_ruleNoteValues3618 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_63_in_ruleNoteValues3633 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_64_in_ruleNoteValues3648 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_65_in_ruleNoteValues3663 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_66_in_ruleNoteValues3678 = new BitSet(new long[]{0x0000000000000002L});

}